/*                                  ATELIER                                   */

/* %%LICENSE_TAG%%                                                            */
package edu.gmu.view.cube;

import edu.gmu.atelier.Vector;
import edu.gmu.atelier.RealVector;


/*******************************************************************
 * ControlModel holds xyz rotation, translation, and scaling parameters.
 * @author  James H. Pope
 * @version $Id:$
 *******************************************************************/
public class ControlModel
{
    /**
     * run
     */
    private boolean run = false;

    private double xRotation = 0.0;
    private double yRotation = 0.0;
    private double zRotation = 0.0;
    
    private double xScaling = 1.0;
    private double yScaling = 1.0;
    private double zScaling = 1.0;
    
    private double xTranslate = 1.0;
    private double yTranslate = 1.0;
    private double zTranslate = 1.0;

    private Vector velocityVector = null;
    private double          znear = 100.0;
    private double           zfar = 800.0;
    
    
    /**
     * Creates a new ControlModel with specified parameters.
     */
    public ControlModel ( )
    {
        this.velocityVector = new RealVector( 0.0, 0.0, -10.0 );
        //this.velocityVector = new Vector.( 0.0, 0.0, -10.0 );
    }

    /**
     * Sets the run.
     * @param run
     */
    public void setRun( boolean run )
    {
        this.run = run;
    }
    
    /**
     * Gets the run.
     * @return run
     */
    public boolean isRun( )
    {
        return this.run;
    }
    
    /**
     * Gets the xRotation (in radians)
     * @param xRotation
     */
    public void setXRotation( double xRotation )
    {
        this.xRotation = xRotation;
    }
    
    /**
     * Sets the xRotation
     * @return xRotation
     */
    public double getXRotation()
    {
        return this.xRotation;
    }
    
    /**
     * Gets the yRotation (in radians)
     * @param yRotation
     */
    public void setYRotation( double yRotation )
    {
        this.yRotation = yRotation;
    }
    
    /**
     * Sets the yRotation
     * @return yRotation
     */
    public double getYRotation()
    {
        return this.yRotation;
    }
    
    /**
     * Gets the zRotation (in radians)
     * @param zRotation
     */
    public void setZRotation( double zRotation )
    {
        this.zRotation = zRotation;
    }
    
    /**
     * Sets the zRotation
     * @return zRotation
     */
    public double getZRotation()
    {
        return this.zRotation;
    }
    
    /**
     * Gets the xTranslate (in radians)
     * @param xTranslate
     */
    public void setXTranslate( double xTranslate )
    {
        this.xTranslate = xTranslate;
    }
    
    /**
     * Sets the xTranslate
     * @return xTranslate
     */
    public double getXTranslate()
    {
        return this.xTranslate;
    }
    
    /**
     * Gets the yTranslate (in radians)
     * @param yTranslate
     */
    public void setYTranslate( double yTranslate )
    {
        this.yTranslate = yTranslate;
    }
    
    /**
     * Sets the yTranslate
     * @return yTranslate
     */
    public double getYTranslate()
    {
        return this.yTranslate;
    }
    
    /**
     * Gets the zTranslate (in radians)
     * @param zTranslate
     */
    public void setZTranslate( double zTranslate )
    {
        this.zTranslate = zTranslate;
    }
    
    /**
     * Sets the zTranslate
     * @return zTranslate
     */
    public double getZTranslate()
    {
        return this.zTranslate;
    }
    
    /**
     * Gets the znear
     * @param znear
     */
    public void setZNear( double znear )
    {
        this.znear = znear;
    }
    
    /**
     * Sets the znear
     * @return znear
     */
    public double getZNear()
    {
        return this.znear;
    }
    
    /**
     * Gets the zfar
     * @param zfar
     */
    public void setZFar( double zfar )
    {
        this.zfar = zfar;
    }
    
    /**
     * Sets the zfar
     * @return zfar
     */
    public double getZFar()
    {
        return this.zfar;
    }
    
    /**
     * Gets the velocityVector
     * @param velocityVector
     */
    public void setVelocityVector( Vector velocityVector )
    {
        this.velocityVector = velocityVector;
    }
    
    /**
     * Sets the velocityVector
     * @return velocityVector
     */
    public Vector getVelocityVector()
    {
        return this.velocityVector;
    }
    
    
    /**
     * Gets the xScaling
     * @param xScaling
     */
    public void setXScaling( double xScaling )
    {
        this.xScaling = xScaling;
    }
    
    /**
     * Sets the xScaling
     * @return xScaling
     */
    public double getXScaling()
    {
        return this.xScaling;
    }
    
    /**
     * Gets the yScaling
     * @param yScaling
     */
    public void setYScaling( double yScaling )
    {
        this.yScaling = yScaling;
    }
    
    /**
     * Sets the yScaling
     * @return yScaling
     */
    public double getYScaling()
    {
        return this.yScaling;
    }
    
    /**
     * Gets the zScaling
     * @param zScaling
     */
    public void setZScaling( double zScaling )
    {
        this.zScaling = zScaling;
    }
    
    /**
     * Sets the zScaling
     * @return zScaling
     */
    public double getZScaling()
    {
        return this.zScaling;
    }
     
}

/*                                  ATELIER                                   */
